CHECK CONFLICTSの構文は、次のとおりです。
CREATE REPLICATIONまたはALTER REPLICATION文のCHECK CONFLICTSの部分には、次のパラメータがあります。
CHECK CONFLICTS BY ROW TIMESTAMP | すべての更新競合と一意性競合の検出を指定します。競合はON EXCEPTIONパラメータで指定された方法で解消されます。 DELETE処理とUPDATE処理の競合についても検出します。 |
COLUMN ColumnName | レプリケートされた表の列を使用してタイムスタンプを比較します。表はELEMENTの記述のTableNameで指定されます。 ColumnNameはNULL値可能なBINARY(8)型の列で、行が最後に更新されたタイムスタンプの格納に使用されます。TimesTenでは、格納された値よりも小さいタイムスタンプ値を持つ行の更新要求が拒否されます。指定されたColumnNameは、マスターおよびサブスクライバ・データ・ストアの両方のレプリケートされた表に存在している必要があります。 |
NO CHECK | 指定された要素に対する競合解消を行わないように指定します。 |
UPDATE BY {SYSTEM | USER} | タイムスタンプ値をTimesTen(SYSTEM)またはアプリケーション(USER)のどちらで管理するかを指定します。マスター・データ・ストアおよびサブスクライバ・データ・ストアのレプリケートされた表は、同じUPDATE BY指定を使用する必要があります。詳細は、『Oracle TimesTen Replication - TimesTen to TimesTen開発者および管理者ガイド』のシステム・タイムスタンプ列のメンテナンスに関する項およびユーザー・タイムスタンプ列のメンテナンスに関する項を参照してください。 デフォルト値は、UPDATE BY SYSTEMです。 |
ON EXCEPTION {ROLLBACK WORK | NO ACTION} | 検出された競合の解消方法を指定します。ROW TIMESTAMP競合の検出には、次の解消オプションがあります。
デフォルト値は、ON EXCEPTION ROLLBACK WORKです。 |
REPORT TO 'FileName' | タイムスタンプ比較に失敗した更新を記録するファイルを指定します。FileNameは、1,000文字以下のSQL文字列です(SQL文字列リテラルは一重引用符で囲まれた、空白を含むすべての文字列です)。複数の表で失敗した更新を記録するために、同一のファイルを使用できます。 |
NO REPORT | 失敗したタイムスタンプの比較を記録しないように指定します。 |
MASTERDSのREPL.TABの内容を2つのサブスクライバ、SUBSCRIBER1DSとSUBSCRIBER2DSにレプリケートします。
CREATE REPLICATION REPL.TWOSUBSCRIBERS ELEMENT E TABLE REPL.TAB MASTER MASTERDS ON "SERVER1" SUBSCRIBER SUBSCRIBER1DS ON "SERVER2", SUBSCRIBER2DS ON "SERVER3";
MASTERDSデータ・ストア全体をサブスクライバSUBSCRIBER1DSにレプリケートします。FAILTHRESHOLDを指定すると、SUBSCRIBERIDSが失敗したとみなされる前に、最大10のログ・ファイルをMASTERDSに蓄積します。
CREATE REPLICATION REPL.WHOLESTORE ELEMENT E DATASTORE MASTER MASTERDS ON "SERVER1" SUBSCRIBER SUBSCRIBER1DS ON "SERVER2" STORE MASTERDS FAILTHRESHOLD 10;
WESTDSおよびEASTDSデータ・ストア全体を双方向にレプリケートして、RETURN TWOSAFEサービスを有効にします。
CREATE REPLICATION REPL.BIWHOLESTORE ELEMENT E1 DATASTORE MASTER WESTDS ON "WESTCOAST" SUBSCRIBER EASTDS ON "EASTCOAST" RETURN TWOSAFE ELEMENT E2 DATASTORE MASTER EASTDS ON "EASTCOAST" SUBSCRIBER WESTDS ON "WESTCOAST" RETURN TWOSAFE;
例13.31と同様ですが、サブスクライバSUBSCRIBER1DSへの選択トランザクション更新に対してのみ、RETURN RECIPTサービスを有効にします。
CREATE REPLICATION REPL.TWOSUBSCRIBERS ELEMENT E TABLE REPL.TAB MASTER MASTERDS ON "SERVER1" SUBSCRIBER SUBSCRIBER1DS ON "SERVER2" RETURN RECEIPT BY REQUEST SUBSCRIBER SUBSCRIBER2DS ON "SERVER3";
WESTデータ・ストアのCUSTOMERSWEST表の内容をROUNDUPデータ・ストアにレプリケートし、同様にEASTデータ・ストアのCUSTOMERSEAST表をROUNDUPデータ・ストアにレプリケートします。すべてのトランザクションに対してRETURN RECIPTサービスを有効にします。
CREATE REPLICATION R ELEMENT WEST TABLE CUSTOMERSWEST MASTER WEST ON "SERVERWEST" SUBSCRIBER ROUNDUP ON "SERVERROUNDUP" RETURN RECEIPT ELEMENT EAST TABLE CUSTOMERSEAST MASTER EAST ON "SERVEREAST" SUBSCRIBER ROUNDUP ON "SERVERROUNDUP" RETURN RECEIPT;
CENTRALDSデータ・ストアのREPL.TAB表の内容をPROPDSデータ・ストアにレプリケートし、PROPDSはBACKUP1DSおよびBACKUP2DSデータ・ストアに変更を伝播します。
CREATE REPLICATION REPL.PROPAGATOR ELEMENT A TABLE REPL.TAB MASTER CENTRALDS ON "FINANCE" SUBSCRIBER PROPRDS ON "NETHANDLER" ELEMENT B TABLE REPL.TAB PROPAGATOR PROPRDS ON "NETHANDLER" SUBSCRIBER BACKUP1DS ON "BACKUPSYSTEM1" BACKUP2DS ON "BACKUPSYSTEM2";
EASTDSとWESTDSデータ・ストアの間で、REPL.ACCOUNTS表の内容を双方向でレプリケートします。各データ・ストアは、REPL.ACCOUNTS表のマスターとサブスクライバの両方として設定されます。
REPL.ACCOUNTS表がEASTDSとWESTDSデータ・ストアのいずれかで更新されるため、この定義にはタイムスタンプ列(TSTAMP)が含まれます。CHECK CONFLICTS句により、2つのデータ・ストア間で発生した更新競合を検出するための自動タイムスタンプ比較が開始されます。比較が失敗すると、古いタイムスタンプを持つ更新が含まれるトランザクションの全体がロールバック(破棄)されます。
CREATE REPLICATION REPL.R1 ELEMENT ELEM_ACCOUNTS_1 TABLE REPL.ACCOUNTS CHECK CONFLICTS BY ROW TIMESTAMP COLUMN TSTAMP UPDATE BY SYSTEM ON EXCEPTION ROLLBACK MASTER WESTDS ON "WESTCOAST" SUBSCRIBER EASTDS ON "EASTCOAST" ELEMENT ELEM_ACCOUNTS_2 TABLE REPL.ACCOUNTS CHECK CONFLICTS BY ROW TIMESTAMP COLUMN TSTAMP UPDATE BY SYSTEM ON EXCEPTION ROLLBACK MASTER EASTDS ON "EASTCOAST" SUBSCRIBER WESTDS ON "WESTCOAST";
RETURN TWOSAFEサービスを使用して、REPL.ACCOUNTS表の内容をACTIVEDSデータ・ストアからBACKUPDSデータ・ストアにレプリケートします。ACTIVEDSではTCP/IPポート40000、BACKUPDSではTCP/IPポート40001を使用します。ACTIVEDSでのトランザクションでは、可能な場合に常にコミットする必要があります。そのため、LOCAL COMMIT ACTIONを使用してレプリケーションのタイムアウト後もトランザクションがコミットされるように、また、レプリケーションが停止するとRETURN TWOSAFEサービスが無効になるようにレプリケーションを構成します。BACKUPDSデータ・ストアへの接続が中断された場合にレプリケーションでの大幅な遅延を回避するには、5つのトランザクションがタイムアウトすると無効になるようにRETURNサービスを構成します。また、RETURNサービスは、BACKUPDSデータ・ストアのレプリケーション・エージェントが100ミリ秒未満で応答した場合に再度有効になるようにも構成します。最後に、データ・ストア間の帯域幅は制限されているため、データをACTIVEDSデータ・ストアからレプリケートする場合にそのデータが圧縮されるようにレプリケーションを構成します。
CREATE REPLICATION REPL.R ELEMENT ELEM_ACCOUNTS_1 TABLE REPL.ACCOUNTS MASTER ACTIVEDS ON "ACTIVE" SUBSCRIBER BACKUPDS ON "BACKUP" RETURN TWOSAFE ELEMENT ELEM_ACCOUNTS_2 TABLE REPL.ACCOUNTS MASTER ACTIVEDS ON "ACTIVE" SUBSCRIBER BACKUPDS ON "BACKUP" RETURN TWOSAFE STORE ACTIVEDS ON "ACTIVE" PORT 40000 LOCAL COMMIT ACTION COMMIT RETURN SERVICES OFF WHEN REPLICATION STOPPED DISABLE RETURN SUBSCRIBER 5 RESUME RETURN 100 COMPRESS TRAFFIC ON STORE BACKUPDS ON "BACKUP" PORT 40001;
ALTER ACTIVE STANDBY PAIR
ALTER REPLICATION
CREATE ACTIVE STANDBY PAIR
DROP ACTIVE STANDBY PAIR
DROP REPLICATION